// 参数类型注释:通过在参数后加冒号指定参数类型
// function fn(a:number,b:string){
//
// }
// fn(1,"a");
// fn("a","a");// 异常

// 函数返回值:顾名思义，用于指定返回值的类型。写法依然是通过冒号指定返回类型。

// const fn = (a:number,b:string):number=>{
//     // return a;
//     return 1;
//     // return "abc";// 异常
// }


// 形实参数量与类型需一致
// function fn(a:number,b:boolean):string{
//     return "abc";
// }
// fn(2,true);
// // fn(1,"a");// 类型不对
// // fn(1,true,1);// 不允许多写
// // fn();// 不允许少写

// 可选参数:?
// function fn(a:number,b?:string){
//     console.log(a,b);
// }
// fn(1,"a");
// fn(1);


// 默认参数
// function fn(a:number=1,b:number=2):number{
//     return a+b;
// }
// console.log(fn());// 3
// console.log(fn(3));// 5


//  剩余参数
// function fn(a:number,b:number,...c:(number|string)[]){
//     console.log(c);
// }
// fn(1,2,3,4,5,"a");

